home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 3.1 KB | 201 lines |
- 1 ' MAZE - Taken from the DG version of the same name
- 2 ' Will Fastie - 16 Jan 82
- 3 KEY OFF: CLS
- 4 PROG$="MAZE v0.00 17 Jan 82"
- 5 PRINT PROG$: PRINT
- 6 PRINT "Where should the MAZE output go?"
- 7 PRINT
- 8 PRINT " 1 - Display
- 9 PRINT " 2 - Printer"
- 10 PRINT
- 11 INPUT" Enter selection: ",AN
- 12 IF 1 > AN OR AN > 2 THEN 11
- 20 PRINT
- 21 INPUT "Enter dimensions, height and width: ",V,H
- 22 IF 2>H OR H>23 OR 2>V OR V>23 THEN 21
- 30 RV=VAL(LEFT$(TIME$,2))+VAL(RIGHT$(TIME$,2))+VAL(MID$(TIME$,4,2))
- 32 RV=RV+VAL(MID$(DATE$,3,2))
- 34 RANDOMIZE(RV)
- 40 IF AN=1 THEN OPEN "scrn:" FOR OUTPUT AS 1
- 41 IF AN=2 THEN OPEN "lpt1:" FOR OUTPUT AS 1
- 50 DIM W(26,26), V(26,26)
- 100 CLS
- 240 Q=0
- 250 Z=0
- 260 X=INT(RND*H+1)
- 270 FOR I = 1 TO H
- 280 IF I=X THEN 310
- 290 PRINT #1, "|--";
- 300 GOTO 320
- 310 PRINT #1, "| ";
- 320 NEXT I
- 330 PRINT #1, "|"
- 340 C=1
- 350 W(X,1)=C
- 360 C=C+1
- 370 R=X
- 380 S=1
- 390 GOTO 500
- 400 IF R<>H THEN 480
- 410 IF S<>V THEN 450
- 420 R=1
- 430 S=1
- 440 GOTO 490
- 450 R=1
- 460 S=S+1
- 470 GOTO 490
- 480 R=R+1
- 490 IF W(R,S)=0 THEN 400
- 500 IF R-1=0 THEN 950
- 510 IF W(R-1,S)<>0 THEN 950
- 520 IF S-1=0 THEN 720
- 530 IF W(R,S-1)<>0 THEN 720
- 540 IF R=H THEN 600
- 550 IF W(R+1,S)<>0 THEN 600
- 560 X=INT(RND*3+1)
- 570 IF X=1 THEN 1380
- 580 IF X=2 THEN 1450
- 590 IF X=3 THEN 1520
- 600 IF S<>V THEN 640
- 610 IF Z=1 THEN 690
- 620 Q=1
- 630 GOTO 650
- 640 IF W(R,S+1)<>0 THEN 690
- 650 X=INT(RND*3+1)
- 660 IF X=1 THEN 1380
- 670 IF X=2 THEN 1450
- 680 IF X=3 THEN 1610
- 690 X=INT(RND*2+1)
- 700 IF X=1 THEN 1380
- 710 IF X=2 THEN 1450
- 720 IF R=H THEN 860
- 730 IF W(R+1,S)<>0 THEN 860
- 740 IF S<>V THEN 780
- 750 IF Z=1 THEN 830
- 760 Q=1
- 770 GOTO 790
- 780 IF W(R,S+1)<>0 THEN 830
- 790 X=INT(RND*3+1)
- 800 IF X=1 THEN 1380
- 810 IF X=2 THEN 1520
- 820 IF X=3 THEN 1610
- 830 X=INT(RND*2+1)
- 840 IF X=1 THEN 1380
- 850 IF X=2 THEN 1520
- 860 IF S<>V THEN 900
- 870 IF Z=1 THEN 940
- 880 Q=1
- 890 GOTO 910
- 900 IF W(R,S+1)<>0 THEN 940
- 910 X=INT(RND*2+1)
- 920 IF X=1 THEN 1380
- 930 IF X=2 THEN 1610
- 940 GOTO 1380
- 950 IF S-1=0 THEN 1200
- 960 IF W(R,S-1)<>0 THEN 1200
- 970 IF R=H THEN 1110
- 980 IF W(R+1,S)<>0 THEN 1110
- 990 IF S<>V THEN 1030
- 1000 IF Z=1 THEN 1080
- 1010 Q=1
- 1020 GOTO 1040
- 1030 IF W(R,S+1)<>0 THEN 1080
- 1040 X=INT(RND*3+1)
- 1050 IF X=1 THEN 1450
- 1060 IF X=2 THEN 1520
- 1070 IF X=3 THEN 1610
- 1080 X=INT(RND*2+1)
- 1090 IF X=1 THEN 1450
- 1100 IF X=2 THEN 1520
- 1110 IF S<>V THEN 1150
- 1120 IF Z=1 THEN 1190
- 1130 Q=1
- 1140 GOTO 1160
- 1150 IF W(R,S+1)<>0 THEN 1190
- 1160 X=INT(RND*2+1)
- 1170 IF X=1 THEN 1450
- 1180 IF X=2 THEN 1610
- 1190 GOTO 1450
- 1200 IF R=H THEN 1310
- 1210 IF W(R+1,S)<>0 THEN 1310
- 1220 IF S<>V THEN 1260
- 1230 IF Z=1 THEN 1300
- 1240 Q=1
- 1250 GOTO 1460
- 1260 IF W(R,S+1)<>0 THEN 1300
- 1270 X=INT(RND*2+1)
- 1280 IF X=1 THEN 1520
- 1290 IF X=2 THEN 1610
- 1300 GOTO 1520
- 1310 IF S<>V THEN 1350
- 1320 IF Z=1 THEN 1370
- 1330 Q=1
- 1340 GOTO 1360
- 1350 IF W(R,S+1)<>0 THEN 1370
- 1360 GOTO 1610
- 1370 GOTO 1810
- 1380 W(R-1,S)=C
- 1390 C=C+1
- 1400 V(R-1,S)=2
- 1410 R=R-1
- 1420 IF C=H*V+1 THEN 1820
- 1430 Q=0
- 1440 GOTO 500
- 1450 W(R,S-1)=C
- 1460 C=C+1
- 1470 V(R,S-1)=1
- 1480 S=S-1
- 1490 IF C=H*V+1 THEN 1820
- 1500 Q=0
- 1510 GOTO 500
- 1520 W(R+1,S)=C
- 1530 C=C+1
- 1540 IF V(R,S)=0 THEN 1570
- 1550 V(R,S)=3
- 1560 GOTO 1580
- 1570 V(R,S)=2
- 1580 R=R+1
- 1590 IF C=H*V+1 THEN 1820
- 1600 GOTO 950
- 1610 IF Q=1 THEN 1710
- 1620 W(R,S+1)=C
- 1630 C=C+1
- 1640 IF V(R,S)=0 THEN 1670
- 1650 V(R,S)=3
- 1660 GOTO 1680
- 1670 V(R,S)=1
- 1680 S=S+1
- 1690 IF C=H*V+1 THEN 1820
- 1700 GOTO 500
- 1710 Z=1
- 1720 IF V(R,S)=0 THEN 1760
- 1730 V(R,S)=3
- 1740 Q=0
- 1750 GOTO 1810
- 1760 V(R,S)=1
- 1770 Q=0
- 1780 R=1
- 1790 S=1
- 1800 GOTO 490
- 1810 GOTO 400
- 1820 FOR J = 1 TO V
- 1830 PRINT #1,"|";
- 1840 FOR I = 1 TO H
- 1850 IF V(I,J)<2 THEN 1880
- 1860 PRINT #1, " ";
- 1870 GOTO 1890
- 1880 PRINT #1, " |";
- 1890 NEXT I
- 1900 PRINT #1,
- 1910 FOR I = 1 TO H
- 1920 IF V(I,J)=0 THEN 1960
- 1930 IF V(I,J)=2 THEN 1960
- 1940 PRINT #1, "| ";
- 1950 GOTO 1970
- 1960 PRINT #1, "|--";
- 1970 NEXT I
- 1980 PRINT #1, "|"
- 1990 NEXT J
- 2000 CLOSE
- 2010 END
-